/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import media.Media;
import media.Musique;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import vue.FicheMediaAbstract;
import vue.FicheMediaMusique;

/**
 * Classe MusiqueDAO qui permet d'accéder aux musiques de l'application
 * @author Florian Minin & Khémon Beh
 */
public class MusiqueDAO extends MediaDAOAuteur<Musique>{

    private SortedMap<Integer, Musique> listeMusique;

    /**
     * Constructeur de la classe MusiqueDAO
     */
    public MusiqueDAO() {
        //Appelle le constructeur de la super classe
        listeMusique = new TreeMap<Integer, Musique>();
    }

    @Override
    public void ajouter(Musique musique) {
        //Définition de l'identifant de la musique
        int cle;
        if (listeMusique.isEmpty()) {
            cle = 1;
        } else {
            cle = listeMusique.lastKey() + 1;
        }
        musique.setIdMedia(cle);
        //Par défaut on met le nom du fichier sans l'extension comme titre de la Musique
        musique.setTitre(musique.getNomFichier().substring(0,musique.getNomFichier().lastIndexOf(".")));
        listeMusique.put(cle, musique);
    }


    @Override
    public void modifier(Musique musique) {
        listeMusique.put(musique.getIdMedia(), musique);
    }

    @Override
    public void noter(Musique musique, int note) {
        musique.setNote(note);
        listeMusique.put(musique.getIdMedia(), musique);
    }

    @Override
    public Media getMedia(int id) {
        Media m = listeMusique.get(id);
        return m;
    }

    @Override
    public void supprimerMedia(Musique musique) {
        listeMusique.remove(musique.getIdMedia());
    }

    @Override
    public List<Musique> getListMedia() {
        List l = new ArrayList();
        Set cles = listeMusique.keySet();
        Iterator iterator = cles.iterator();

        while (iterator.hasNext()) {
            l.add(listeMusique.get(iterator.next()));
        }
        return l;
    }

    @Override
    public SortedMap<Integer, Musique> getMapMedia() {
        return listeMusique;
    }

    public void setMapMedia(SortedMap<Integer, Musique> listeMusique) {
        this.listeMusique = listeMusique;
    }

    @Override
    public Media creeMediaGenerique() {
        return new Musique();
    }

    @Override
    public String getTypeMedia() {
        return "Musique";
    }

    @Override
    public FicheMediaAbstract getFicheMedia() {
        return new FicheMediaMusique();
    }
}
